BPF With C
https://www.youtube.com/watch?v=-IGReOYExqo
code: zsh
$ make run
/code/bpf-next/tools/bpf/bpftool/bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
/bin/sh: 1: /code/bpf-next/tools/bpf/bpftool/bpftool: not found
code: zsh
$ bpftool --help
コマンド 'bpftool' が見つかりません。次の方法でインストールできます:
sudo apt install linux-intel-iotg-5.15-tools-common # version 5.15.0-1010.14~20.04.1, or
sudo apt install linux-oem-5.6-tools-common # version 5.6.0-1017.17
sudo apt install linux-tools-common # version 5.4.0-121.137
sudo apt install linux-iot-tools-common # version 5.4.0-1001.3
$ ls /code
ls: '/code' にアクセスできません: そのようなファイルやディレクトリはありませんzsh
code: zsh
$ sudo apt install linux-tools-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
gcc-9-base:i386 gir1.2-accounts-1.0 gir1.2-gdata-0.0 gir1.2-signon-1.0 gnome-software-common lib32gcc1 libargon2-0 libart-2.0-2 libasan2 libavutil55
libbabeltrace-ctf1 libboost-date-time1.65.1 libboost-iostreams1.65.1 libbrlapi0.6 libcdio17 libcrystalhd3 libcwidget3v5 libdvdread4 libffi6:i386
libfile-copy-recursive-perl libfwupdplugin1 libgcc-5-dev libgdbm5 libgnome-desktop-3-17 libgutenprint-common libgutenprint2 libgutenprint9 libindicator7 libiptc0
libisc169 libisl15 libisl19 libjson-c3 liblouis14 liblouisutdml8 liblwres160 libmagickcore-6.q16-3 libmagickwand-6.q16-3 libmozjs-52-0 libmpfr4 libmpx0 libnm-gtk0
libnss-myhostname libntfs-3g88 liboauth0 libplymouth4 libpoppler73 libprocps6 libprotobuf-lite10 libqpdf21 libreadline7 libreoffice-style-galaxy libsignon-glib1
libswresample2 libswscale4 libtinfo-dev libx264-152 libzeitgeist-1.0-1 nplan openbox-menu python-talloc python3-asn1crypto python3-feedparser python3-oauth
python3-zope.interface qtchooser qtcore4-l10n unity-lens-applications unity-lens-files unity-lens-photos unity-scope-chromiumbookmarks unity-scope-colourlovers
unity-scope-manpages unity-scope-openclipart unity-scope-tomboy unity-scope-video-remote unity-scope-virtualbox unity-scope-yelp unity-scope-zotero
unity-scopes-runner
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
linux-tools-common
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
186 kB のアーカイブを取得する必要があります。
この操作後に追加で 840 kB のディスク容量が消費されます。
186 kB を 0秒 で取得しました (498 kB/s)
以前に未選択のパッケージ linux-tools-common を選択しています。
(データベースを読み込んでいます ... 現在 230898 個のファイルとディレクトリがインストールされています。)
.../linux-tools-common_5.4.0-121.137_all.deb を展開する準備をしています ...
linux-tools-common (5.4.0-121.137) を展開しています...
linux-tools-common (5.4.0-121.137) を設定しています ...
man-db (2.9.1-1) のトリガを処理しています ...
code: zsh
$ bpftool --help
WARNING: bpftool not found for kernel 5.4.0-121
You may need to install the following packages for this specific kernel:
linux-tools-5.4.0-121-generic
linux-cloud-tools-5.4.0-121-generic
You may also want to install one of the following packages to keep up to date:
linux-tools-generic
linux-cloud-tools-generic
code: zsh
$ sudo apt install linux-tools-5.4.0-121-generic
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
gcc-9-base:i386 gir1.2-accounts-1.0 gir1.2-gdata-0.0 gir1.2-signon-1.0 gnome-software-common lib32gcc1 libargon2-0 libart-2.0-2 libasan2 libavutil55
libbabeltrace-ctf1 libboost-date-time1.65.1 libboost-iostreams1.65.1 libbrlapi0.6 libcdio17 libcrystalhd3 libcwidget3v5 libdvdread4 libffi6:i386
libfile-copy-recursive-perl libfwupdplugin1 libgcc-5-dev libgdbm5 libgnome-desktop-3-17 libgutenprint-common libgutenprint2 libgutenprint9 libindicator7 libiptc0
libisc169 libisl15 libisl19 libjson-c3 liblouis14 liblouisutdml8 liblwres160 libmagickcore-6.q16-3 libmagickwand-6.q16-3 libmozjs-52-0 libmpfr4 libmpx0 libnm-gtk0
libnss-myhostname libntfs-3g88 liboauth0 libplymouth4 libpoppler73 libprocps6 libprotobuf-lite10 libqpdf21 libreadline7 libreoffice-style-galaxy libsignon-glib1
libswresample2 libswscale4 libtinfo-dev libx264-152 libzeitgeist-1.0-1 nplan openbox-menu python-talloc python3-asn1crypto python3-feedparser python3-oauth
python3-zope.interface qtchooser qtcore4-l10n unity-lens-applications unity-lens-files unity-lens-photos unity-scope-chromiumbookmarks unity-scope-colourlovers
unity-scope-manpages unity-scope-openclipart unity-scope-tomboy unity-scope-video-remote unity-scope-virtualbox unity-scope-yelp unity-scope-zotero
unity-scopes-runner
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
linux-tools-5.4.0-121
以下のパッケージが新たにインストールされます:
linux-tools-5.4.0-121 linux-tools-5.4.0-121-generic
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 1 個。
5,584 kB のアーカイブを取得する必要があります。
この操作後に追加で 26.0 MB のディスク容量が消費されます。
5,584 kB を 2秒 で取得しました (2,673 kB/s)
以前に未選択のパッケージ linux-tools-5.4.0-121 を選択しています。
(データベースを読み込んでいます ... 現在 230963 個のファイルとディレクトリがインストールされています。)
.../linux-tools-5.4.0-121_5.4.0-121.137_amd64.deb を展開する準備をしています ...
linux-tools-5.4.0-121 (5.4.0-121.137) を展開しています...
以前に未選択のパッケージ linux-tools-5.4.0-121-generic を選択しています。
.../linux-tools-5.4.0-121-generic_5.4.0-121.137_amd64.deb を展開する準備をしています ...
linux-tools-5.4.0-121-generic (5.4.0-121.137) を展開しています...
linux-tools-5.4.0-121 (5.4.0-121.137) を設定しています ...
linux-tools-5.4.0-121-generic (5.4.0-121.137) を設定しています ...
code: zsh
$ bpftool --help
Usage: /usr/lib/linux-tools/5.4.0-121-generic/bpftool OPTIONS OBJECT { COMMAND | help } /usr/lib/linux-tools/5.4.0-121-generic/bpftool batch file FILE
/usr/lib/linux-tools/5.4.0-121-generic/bpftool version
OBJECT := { prog | map | cgroup | perf | net | feature | btf }
{-m|--mapcompat} | {-n|--nomount} }
code: zsh
$ make vmlinux
/usr/lib/linux-tools/5.4.0-121-generic/bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
libbpf: failed to get EHDR from /sys/kernel/btf/vmlinux
Error: failed to load BTF from /sys/kernel/btf/vmlinux: Unknown error -4001
code: zsh
$ bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
libbpf: failed to get EHDR from /sys/kernel/btf/vmlinux
Error: failed to load BTF from /sys/kernel/btf/vmlinux: Unknown error -4001
$ bpftool --version
/usr/lib/linux-tools/5.4.0-121-generic/bpftool v5.4.189
code: zsh
$ sudo apt upgrade linux-tools-generic
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
gcc-9-base:i386 gir1.2-accounts-1.0 gir1.2-gdata-0.0 gir1.2-signon-1.0 gnome-software-common lib32gcc1 libargon2-0 libart-2.0-2 libasan2 libavutil55
libbabeltrace-ctf1 libboost-date-time1.65.1 libboost-iostreams1.65.1 libbrlapi0.6 libcdio17 libcrystalhd3 libcwidget3v5 libdvdread4 libffi6:i386
libfile-copy-recursive-perl libfwupdplugin1 libgcc-5-dev libgdbm5 libgnome-desktop-3-17 libgutenprint-common libgutenprint2 libgutenprint9 libindicator7 libiptc0
libisc169 libisl15 libisl19 libjson-c3 liblouis14 liblouisutdml8 liblwres160 libmagickcore-6.q16-3 libmagickwand-6.q16-3 libmozjs-52-0 libmpfr4 libmpx0 libnm-gtk0
libnss-myhostname libntfs-3g88 liboauth0 libplymouth4 libpoppler73 libprocps6 libprotobuf-lite10 libqpdf21 libreadline7 libreoffice-style-galaxy libsignon-glib1
libswresample2 libswscale4 libtinfo-dev libx264-152 libzeitgeist-1.0-1 nplan openbox-menu python-talloc python3-asn1crypto python3-feedparser python3-oauth
python3-zope.interface qtchooser qtcore4-l10n unity-lens-applications unity-lens-files unity-lens-photos unity-scope-chromiumbookmarks unity-scope-colourlovers
unity-scope-manpages unity-scope-openclipart unity-scope-tomboy unity-scope-video-remote unity-scope-virtualbox unity-scope-yelp unity-scope-zotero
unity-scopes-runner
これを削除するには 'sudo apt autoremove' を利用してください。
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
以下のパッケージが新たにインストールされます:
linux-tools-generic
以下のパッケージはアップグレードされます:
bolt
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
145 kB のアーカイブを取得する必要があります。
この操作後に追加で 57.3 kB のディスク容量が消費されます。
143 kB を 2秒 で取得しました (94.5 kB/s)
E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。
ibbpf probes to see if your sys fs exports the file /sys/kernel/btf/vmlinux (from Kernel 5.5+)
code: zsh
$ sudo apt remove linux-tools-5.4.0-121-generic
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
gcc-9-base:i386 gir1.2-accounts-1.0 gir1.2-gdata-0.0 gir1.2-signon-1.0 gnome-software-common lib32gcc1 libargon2-0 libart-2.0-2 libasan2 libavutil55
libbabeltrace-ctf1 libboost-date-time1.65.1 libboost-iostreams1.65.1 libbrlapi0.6 libcdio17 libcrystalhd3 libcwidget3v5 libdvdread4 libffi6:i386
libfile-copy-recursive-perl libfwupdplugin1 libgcc-5-dev libgdbm5 libgnome-desktop-3-17 libgutenprint-common libgutenprint2 libgutenprint9 libindicator7 libiptc0
libisc169 libisl15 libisl19 libjson-c3 liblouis14 liblouisutdml8 liblwres160 libmagickcore-6.q16-3 libmagickwand-6.q16-3 libmozjs-52-0 libmpfr4 libmpx0 libnm-gtk0
libnss-myhostname libntfs-3g88 liboauth0 libplymouth4 libpoppler73 libprocps6 libprotobuf-lite10 libqpdf21 libreadline7 libreoffice-style-galaxy libsignon-glib1
libswresample2 libswscale4 libtinfo-dev libx264-152 libzeitgeist-1.0-1 linux-tools-5.4.0-121 nplan openbox-menu python-talloc python3-asn1crypto python3-feedparser
python3-oauth python3-zope.interface qtchooser qtcore4-l10n unity-lens-applications unity-lens-files unity-lens-photos unity-scope-chromiumbookmarks
unity-scope-colourlovers unity-scope-manpages unity-scope-openclipart unity-scope-tomboy unity-scope-video-remote unity-scope-virtualbox unity-scope-yelp
unity-scope-zotero unity-scopes-runner
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
linux-tools-5.4.0-121-generic
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 1 個。
この操作後に 622 kB のディスク容量が解放されます。
(データベースを読み込んでいます ... 現在 230990 個のファイルとディレクトリがインストールされています。)
linux-tools-5.4.0-121-generic (5.4.0-121.137) を削除しています ...
code: zsh
$ sudo apt remove linux-tools-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
gcc-9-base:i386 gir1.2-accounts-1.0 gir1.2-gdata-0.0 gir1.2-signon-1.0 gnome-software-common lib32gcc1 libargon2-0 libart-2.0-2 libasan2 libavutil55
libbabeltrace-ctf1 libboost-date-time1.65.1 libboost-iostreams1.65.1 libbrlapi0.6 libcdio17 libcrystalhd3 libcwidget3v5 libdvdread4 libffi6:i386
libfile-copy-recursive-perl libfwupdplugin1 libgcc-5-dev libgdbm5 libgnome-desktop-3-17 libgutenprint-common libgutenprint2 libgutenprint9 libindicator7 libiptc0
libisc169 libisl15 libisl19 libjson-c3 liblouis14 liblouisutdml8 liblwres160 libmagickcore-6.q16-3 libmagickwand-6.q16-3 libmozjs-52-0 libmpfr4 libmpx0 libnm-gtk0
libnss-myhostname libntfs-3g88 liboauth0 libplymouth4 libpoppler73 libprocps6 libprotobuf-lite10 libqpdf21 libreadline7 libreoffice-style-galaxy libsignon-glib1
libswresample2 libswscale4 libtinfo-dev libx264-152 libzeitgeist-1.0-1 nplan openbox-menu python-talloc python3-asn1crypto python3-feedparser python3-oauth
python3-zope.interface qtchooser qtcore4-l10n unity-lens-applications unity-lens-files unity-lens-photos unity-scope-chromiumbookmarks unity-scope-colourlovers
unity-scope-manpages unity-scope-openclipart unity-scope-tomboy unity-scope-video-remote unity-scope-virtualbox unity-scope-yelp unity-scope-zotero
unity-scopes-runner
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
linux-tools-5.4.0-121 linux-tools-common
アップグレード: 0 個、新規インストール: 0 個、削除: 2 個、保留: 1 個。
この操作後に 26.2 MB のディスク容量が解放されます。
(データベースを読み込んでいます ... 現在 230976 個のファイルとディレクトリがインストールされています。)
linux-tools-5.4.0-121 (5.4.0-121.137) を削除しています ...
linux-tools-common (5.4.0-121.137) を削除しています ...
man-db (2.9.1-1) のトリガを処理しています ...
$ bpftool --help
コマンド 'bpftool' が見つかりません。次の方法でインストールできます:
code: zsh
$ make
Auto-detecting system features:
...
... disassembler-four-args: OFF CC bpf_jit_disasm.o
/home/user/linux_stable/tools/bpf/bpf_jit_disasm.c:23:10: fatal error: bfd.h: そのようなファイルやディレクトリはありません
$ sudo apt-get install binutils-dev
/bin/sh: 1: clang: not found
$ sudo apt install clang
GEN vmlinux.h
CLANG profiler.bpf.o
make1: llvm-strip: コマンドが見つかりませんでした $ sudo apt-get install llvm
skeleton/pid_iter.bpf.c:53:17: note: forward declaration of 'struct bpf_iter__task_file'
int iter(struct bpf_iter__task_file *ctx)
^
3 warnings and 19 errors generated.
code: zsh
$ make samples/bpf/
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
DESCEND objtool
DESCEND bpf/resolve_btfids
make2: 'samples/bpf/' に対して行うべき事はありません. code: zsh
$ make M=samples/bpf
3 warnings and 19 errors generated.
code: zsh
$ git checkout linux-5.0.y
Updating files: 100% (74461/74461), done.
Branch 'linux-5.0.y' set up to track remote branch 'linux-5.0.y' from 'origin'.
Switched to a new branch 'linux-5.0.y'
$ make headers_install
$ make M=samples/bpf
CLANG-bpf samples/bpf/xdp_sample_pkts_kern.o
Building modules, stage 2.
MODPOST 0 modules
scripts/mod/modpost: invalid option -- 'I'
$ make samples/bpf/
$ sudo ./sockex1
TCP 0 UDP 0 ICMP 0 bytes
TCP 0 UDP 0 ICMP 196 bytes
TCP 0 UDP 0 ICMP 392 bytes
TCP 0 UDP 0 ICMP 588 bytes
TCP 0 UDP 0 ICMP 784 bytes
code: zsh
$ make
CC bpf_jit_disasm.o
LINK bpf_jit_disasm
CC bpf_dbg.o
LINK bpf_dbg
CC bpf_asm.o
BISON bpf_exp.yacc.c
CC bpf_exp.yacc.o
FLEX bpf_exp.lex.c
CC bpf_exp.lex.o
LINK bpf_asm
DESCEND bpftool
make1: *** 'map_perf_ring.o' に必要なターゲット '/home/user/linux_stable/tools/include/linux/compiler_types.h' を make するルールがありません. 中止. code: zsh
$ ./bpftool --version
./bpftool v6.8.0
using libbpf v0.8
features: libbfd, libbpf_strict
$ bpftool btf dump file /sys/kernel/btf/vmlinux format c > /home/user/desktop/vmlinux.h
コマンド 'bpftool' が見つかりません。次の方法でインストールできます:
sudo apt install linux-intel-iotg-5.15-tools-common # version 5.15.0-1010.14~20.04.1, or
sudo apt install linux-oem-5.6-tools-common # version 5.6.0-1017.17
sudo apt install linux-tools-common # version 5.4.0-122.138
sudo apt install linux-iot-tools-common # version 5.4.0-1001.3
$ ./bpftool btf dump file /sys/kernel/btf/vmlinux format c > /home/user/desktop/vmlinux.h
$ less /home/user/desktop/vmlinux.h
code: zsh
$ make run
~/linux_stable/tools/bpf/bpftool/bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
clang -g -O3 -target bpf -D__TARGET_ARCH_x86_64 -c exec.bpf.c -o exec.bpf.o
exec.bpf.c:2:10: fatal error: 'bpf/bpf_helpers.h' file not found
^~~~~~~~~~~~~~~~~~~
1 error generated.
code: zsh
$ make
$ sudo make install